Add workaround for zlib bug "gzread buffer error on empty files".
authoroliskoli <oliskoli>
Tue, 21 Nov 2006 21:12:37 +0000 (21:12 +0000)
committeroliskoli <oliskoli>
Tue, 21 Nov 2006 21:12:37 +0000 (21:12 +0000)
gbfile.c

index bc5505550d60297094fbf1e7f975d008992857fe..0916f63d0ad3bd33b3a7e3ab00889b258d0952a8 100644 (file)
--- a/gbfile.c
+++ b/gbfile.c
@@ -228,6 +228,11 @@ gbfread(void *buf, const gbsize_t size, const gbsize_t members, gbfile *file)
                        const char *errtxt;
                        
                        errtxt = gzerror(file->handle.gz, &errnum);
+                       
+                       /* Workaround for zlib bug: buffer error on empty files */
+                       if ((errnum == Z_BUF_ERROR) && (gztell(file->handle.gz) == 0)) {
+                               return (gbsize_t) 0;
+                       }
                        if ((errnum != Z_STREAM_END) && (errnum != 0))
                                fatal("%s: zlib returned error %d ('%s')!\n",
                                        file->module, errnum, errtxt);